#coding:utf-8
import random
import itertools
import os
import code
import sys
reload(sys)   
sys.setdefaultencoding('utf8') 

import requests
from lxml import etree
headers = {
			"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
			"Accept":"*/*",
			"Accept-Encoding":"gzip, deflate",
			"Accept-Language":"zh-CN,zh;q=0.8",
			
			'Upgrade-Insecure-Requests':'1',
			"Connection":"keep-alive",
			}

def main() :
	while True :
		query = raw_input("请输入需要检索的职位名称：")
		url_list = []
		for i in range(1,31):
			url = 'http://www.zhipin.com/c100010000/h_100010000/?query=' + \
								query + '&page=' + str(i) + '&ka=page-' +str(i)
			url_list.append(url)
		while True :
			print "请输入位于1-30之间的页码\n重新检索职位请输入0\n"
			page = raw_input("page = ")
			if int(page) == 0 :
				break
			elif int(page) > 0 and int(page) < 31 :
				print "是否需要保存数据？\n    1:保存\n    2:不保存，继续"
				save = raw_input("是否保存 = ")
				if int(save) == 1 :
					saved = Save_info(page,query,url_list)
				else :
					saved = Print_info(page,query,url_list)
				if saved[0] == True :
					print "是否查看职位简介？\n"
					Look = raw_input("    1:查看职位简介\n    2:不查看,退出\nLOOK = ")
					if int(Look) == 1 :
						num = raw_input("需查看岗位序号 = ")
						urls = saved[1][int(num)-1]
						urls = urls
						print urls
						Look_Job_Info(urls)
					else :
						break

			else :
				print "请输入正确页码！！"
				continue

#保存并打印显示数据
def Save_info(page,query,url_list):
	try:
		f = open((query +'.txt').decode('utf-8'),'a') 
		po = requests.get(url_list[int(page)-1],headers = headers)
		#print po.text
		job_url = []
		i = 1
		tree = etree.HTML(po.text)
		lis = tree.xpath('//*[@id="main"]/div[3]/div[2]/ul/li')
		for li in lis :
			#职位名称
			name = li.xpath('a/div[1]/div[1]/h3/text()')
			#发布日期
			data = li.xpath('a/div[3]/span/text()')
			#职位详情链接
			href = li.xpath('a/@href')
			href = ['http://www.zhipin.com' + href[0]]
			#薪酬
			red = li.xpath('a/div[1]/div[1]/h3/span/text()')
			#工作地点
			place = li.xpath('a/div[1]/div[1]/p/text()[1]')
			#工作经验
			experience = li.xpath('a/div[1]/div[1]/p/text()[2]')
			#学历要求
			degree = li.xpath('a/div[1]/div[1]/p/text()[3]')
			#招聘企业名称
			company_name = li.xpath('a/div[1]/div[2]/div/h3/text()')
			#所属行业
			belong_line = li.xpath('a/div[1]/div[2]/div/p/text()[1]')
			#公司规模人数
			company_num = li.xpath('a/div[1]/div[2]/div/p/text()[2]')
			#标签分类
			tag_name = li.xpath('a/div[2]/span/text()')
			tagname = ["-*-".join(itertools.chain(tag_name))]
			#发布者
			job_author = li.xpath('a/div[2]/div/p/text()[1]')
			#发布者所在岗位 
			job_author_station = li.xpath('a/div[2]/div/p/text()[2]')

			#print name[0],'http://www.zhipin.com' + href[0],red[0],place[0],experience[0],degree[0],company_name[0],\
			#		belong_line[0],company_num[0],tag_name[0],job_author[0],job_author_station[0]

			job_url.append(href[0])
			print	"""
				********第%d条********
			岗位名称：    %s\n\
			发布日期：    %s\n\
			链接：    %s\n\
			薪酬：    %s\n\
			工作地点：    %s\n\
			工作经验：    %s\n\
			学历：    %s\n\
			招聘企业名称：    %s\n\
			所属行业：    %s\n\
			公司规模人数：    %s\n\
			标签：    %s\n\
			发布者：    %s\n\
			发布者职位：    %s\n\

				"""%(i,name[0],data[0],href[0],red[0],place[0],experience[0],degree[0],company_name[0],\
						belong_line[0],company_num[0],tag_name[0],job_author[0],job_author_station[0])
			i += 1
			#保存信息格式
			line = name[0]+href[0]+red[0]+place[0]+experience[0]+degree[0]+company_name[0]+\
					belong_line[0]+company_num[0]+tag_name[0]+job_author[0]+job_author_station[0]+'\n\n'
			f.write(line)
		f.close()
		print "保存成功！"
		return [True,job_url]	
	except :
		print "保存失败！"
		return [False]

#打印显示数据
def Print_info(page,query,url_list):
	try:
		po = requests.get(url_list[int(page)-1],headers = headers)
		#print po.text
		job_url = []
		i = 1
		tree = etree.HTML(po.text)
		lis = tree.xpath('//*[@id="main"]/div[3]/div[2]/ul/li')
		for li in lis :
			#职位名称
			name = li.xpath('a/div[1]/div[1]/h3/text()')
			#发布日期
			data = li.xpath('a/div[3]/span/text()')
			#职位详情链接
			href = li.xpath('a/@href')
			href = ['http://www.zhipin.com' + href[0]]
			#薪酬
			red = li.xpath('a/div[1]/div[1]/h3/span/text()')
			#工作地点
			place = li.xpath('a/div[1]/div[1]/p/text()[1]')
			#工作经验
			experience = li.xpath('a/div[1]/div[1]/p/text()[2]')
			#学历要求
			degree = li.xpath('a/div[1]/div[1]/p/text()[3]')
			#招聘企业名称
			company_name = li.xpath('a/div[1]/div[2]/div/h3/text()')
			#所属行业
			belong_line = li.xpath('a/div[1]/div[2]/div/p/text()[1]')
			#公司规模人数
			company_num = li.xpath('a/div[1]/div[2]/div/p/text()[2]')
			#标签分类
			tag_name = li.xpath('a/div[2]/span/text()')
			tagname = ["-*-".join(itertools.chain(tag_name))]
			#发布者
			job_author = li.xpath('a/div[2]/div/p/text()[1]')
			#发布者所在岗位 
			job_author_station = li.xpath('a/div[2]/div/p/text()[2]')

			#print name[0],'http://www.zhipin.com' + href[0],red[0],place[0],experience[0],degree[0],company_name[0],\
			#		belong_line[0],company_num[0],tag_name[0],job_author[0],job_author_station[0]

			job_url.append(href[0])
			print	"""
				********第%d条********
			岗位名称：    %s\n\
			发布日期：    %s\n\
			链接：    %s\n\
			薪酬：    %s\n\
			工作地点：    %s\n\
			工作经验：    %s\n\
			学历：    %s\n\
			招聘企业名称：    %s\n\
			所属行业：    %s\n\
			公司规模人数：    %s\n\
			标签：    %s\n\
			发布者：    %s\n\
			发布者职位：    %s\n\

				"""%(i,name[0],data[0],href[0],red[0],place[0],experience[0],degree[0],company_name[0],\
						belong_line[0],company_num[0],tag_name[0],job_author[0],job_author_station[0])
			i += 1
		print "打印结束！"
		return [True,job_url]
	except :
		print "打印错误！"
		return [False]
#查看岗位详细介绍
def Look_Job_Info(url):
	print "岗位详情页...."



if __name__ == '__main__':
	main()


"""


	#print '岗位名称：\n' + name[0],'http://www.zhipin.com' + href[0],red[0],place[0],experience[0],degree[0],company_name[0],\
	#		belong_line[0],company_num[0],tag_name[0],job_author[0],job_author_station[0]

		岗位名称：    %s\n\
		链接：    %s\n\
		薪酬：    %s\n\
		工作地点：    %s\n\
		工作经验：    %s\n\
		学历：    %s\n\
		招聘企业名称：    %s\n\
		所属行业：    %s\n\
		公司规模人数：    %s\n\
		标签：    %s\n\
		发布者：    %s\n\
		发布者职位：    %s\n\

		#%(name[0],'http://www.zhipin.com' + href[0],red[0],place[0],experience[0],degree[0],company_name[0],\
	#		belong_line[0],company_num[0],tag_name[0],job_author[0],job_author_station[0])







			for li in lis :
				#职位名称
				name = li.xpath('a/div[1]/div[1]/h3/text()')
				#职位详情链接
				href = li.xpath('a/@href')
				#薪酬
				red = li.xpath('a/div[1]/div[1]/h3/span/text()')
				#工作地点
				place = li.xpath('a/div[1]/div[1]/p/text()[1]')
				#工作经验
				experience = li.xpath('a/div[1]/div[1]/p/text()[2]')
				#学历要求
				degree = li.xpath('a/div[1]/div[1]/p/text()[3]')
				#招聘企业名称
				company_name = li.xpath('a/div[1]/div[2]/div/h3/text()')
				#所属行业
				belong_line = li.xpath('a/div[1]/div[2]/div/p/text()[1]')
				#公司规模人数
				company_num = li.xpath('a/div[1]/div[2]/div/p/text()[2]')
				#标签分类
				tag_name = li.xpath('a/div[2]/span/text()')
				tagname = ["-*-".join(itertools.chain(tag_name))]
				#发布者
				job_author = li.xpath('a/div[2]/div/p/text()[1]')
				#发布者所在岗位 
				job_author_station = li.xpath('a/div[2]/div/p/text()[2]')

				job_url.append(href[0])
				print name[0],href[0],red[0],place[0],experience[0],degree[0],company_name[0],\
						belong_line[0],company_num[0],tag_name[0],job_author[0],job_author_station[0]

"""